#pragma once


#include <string>
#include <CVector.h>
#include <CIniFile.h>
#include <perlin.h>


using namespace std;


class CGalaxyParams {
 public:
  CVector axis;
  CVector position;
  CVector orientation;
  double bulgeSize;
  double bulgeDust;
  CVector bulgeAxis;

  double rotSign;

  double intensityScale;
  double windingB; // N and B winding numbers
  double windingN;
  double noArms;
  double arm1, arm2, arm3, arm4;

  double innerTwirl;

  CVector camera;

  //  double dustScale;
  //double diskScale;

  double* dataBuffer;
  double bufferSize;

  Perlin* perlin;

  int randShiftX, randShiftY;

  double diskStarModifier;


  CGalaxyParams() {
    dataBuffer = (double*)this;
    bufferSize = (sizeof(CGalaxyParams)-2)/8;

    noArms = 2;
    arm1 = 0;
    arm2 = CMath::pi;
    arm3 = CMath::pi/2.0;
    arm4 = CMath::pi + CMath::pi/2.0;

    perlin = 0;
    
    randShiftX = (int)(abs(CMath::RandomUniform()*1001.0));
    randShiftY = (int)(abs(CMath::RandomUniform()*1001.0));

  }



  ~CGalaxyParams() {
  }

};
